import {
  reqOrderAddress,
  reqOrderDetail,
  reqBuy
} from '../../../api/order'
import {formatTime} from '@/utils/formatTime'
//获取应用实例
const app = getApp()
Page({
  data: {
    buyName: '', // 订购人姓名
    buyPhone: '', // 订购人手机号
    deliveryDate: '选择送达日期', // 期望送达日期
    blessing: '', // 祝福语
    show: false, // 期望送达日期弹框
    minDate: new Date().getTime(),
    currentDate: new Date().getTime(),
    address: {},//收获地址
    orderInfo: [], // 订单商品详情
    totalPrice:'',
    goodsId:'',
    count:1,
  },
  onShow() {
    this.getAddress()
    this.getDetail()
  },
  // 在页面加载的时候触发
  onLoad(options) {
    //获取从商品直接购买传入的参数
    this.setData({
        goodsId:options.goodsId,
        blessing:options.blessing,
        count:options.count
      })
    },
  onUnload() {
    // 在页面销毁以后，需要将全局共享的 address 也进行重置
    // 如果用户再次进入结算支付页面，需要从接口地址获取默认的收货地址进行渲染
    // 需要和产品多沟通
    app.globalData.address = {}
  },
  //获取详情
  async getDetail(){
    //直接购买
    if(this.data.goodsId){
      let res = await reqBuy(this.data.goodsId)
      if(res.code == 200 || res.code == 201){
        this.setData({
          'orderInfo[0]':res.data,
          totalPrice:res.data.price * this.data.count,
        })
      }
      return 
    }
    //购物车购买
    let res = await reqOrderDetail()
    //计算价格
    let totalPrice = 0
    res.data.forEach((item) => {
      totalPrice += item.price * item.count
    });
     // 判断是否存在祝福语
    // 如果需要购买的是多个商品，筛选第一个存在祝福语的商品进行赋值
    const orderGoods = res.data.find((item) => item.blessing != '')
    if(res.code == 200 || res.code == 201){
      this.setData({
        orderInfo:res.data,
        totalPrice:totalPrice,
        blessing: !orderGoods ? '' : orderGoods.blessing
      })
    }
  },
  //获取地址
  async getAddress() {
    // 判断全局共享的 address 中是否存在数据，
    // 如果存在数据，就需要从全局共享的 address 中取到数据进行赋值
    const addressId = app.globalData.address.id
    if (addressId) {
      this.setData({
        address: app.globalData.address
      })
      return
    }
    const res = await reqOrderAddress()
    if (res.code == 200 || res.code == 201) {
      this.setData({
        address: res.data[0] || {}
      })
    }
  },
  // 选择期望送达日期
  onShowDateTimerPopUp() {
    this.setData({
      show: true
    })
  },

  // 期望送达日期确定按钮
  onConfirmTimerPicker(event) {
    // 使用 Vant 提供的时间选择组件，获取的时间是时间戳
    // 需要将时间戳转换成年月日在页面中进行展示才可以
    // 可以调用小程序给提供的日期格式化方法对时间进行转换
    // console.log(event.detail)

    // formatTime 方法接收 JS 的日期对象作为参数
    // 因此需要将时间戳转换成 JS 的日期对象
   const timeRes = formatTime(new Date(event.detail))
    console.log('timeRes',timeRes)
   this.setData({
     show: false,
     deliveryDate: timeRes
   })
  },

  // 期望送达日期取消按钮 以及 关闭弹框时触发
  onCancelTimePicker() {
    this.setData({
      show: false,
      minDate: new Date().getTime(),
      currentDate: new Date().getTime()
    })
  },

  // 跳转到收货地址
  toAddress() {
    wx.navigateTo({
      url: '/modules/settingModule/pages/address/list/list'
    })
  }
})